/*
 * Copyright 2020-2025 the original author or authors.
 * You cannot use this file unless authorized by the author.
 */
package org.ipig.model.anls;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import lombok.ToString;
import org.ipig.model.FieldMapperConf;
import org.ipig.model.JoinCacheConf;
import org.ipig.model.JoinCollConf;
import org.ipig.model.JoinParamConf;
import org.ipig.model.MergeFieldConf;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 处理器conf
 *
 * @author <a href="mailto:comchnts@163.com">chinats</a>
 * @version $$Id: AnlsProcessorConf.java 3 2020-01-21 09:36:33Z ts <comchnts@163.com> $$
 * @since 1.0
 */
@Data
@ToString
public class AnlsProcessorConf implements Serializable {
    /**
     * 处理数据代码
     **/
//    private String code = "";
//    private String title;
//    private String processorClass;
    // 字段映射器Conf, key统一配置大写
//    private Map<String, String> fieldMapperMap = new HashMap<String, String>();
    // 扩展字段，字段名称不能与原始字段相同
//    private List<AnlsJoinCollConf> joinCollFieldList = new ArrayList<>();
    private List<JoinCollConf> joinCollFieldList = new ArrayList<>();
    // 连接缓存字段，字段名称不能与原始字段相同
//    private List<AnlsJoinCacheConf> joinCacheFieldList = new ArrayList<>();
    private List<JoinCacheConf> joinCacheFieldList = new ArrayList<>();
    //关联参数字段
//    private List<AnlsJoinParamConf> joinParamFieldList = new ArrayList<>();
    private List<JoinParamConf> joinParamFieldList = new ArrayList<>();
    // 合并字段Conf
    private List<MergeFieldConf> mergeFieldList = new ArrayList<>();
    // 输出器Conf
//    private List<AnlsOutputterConf> outputterList = new ArrayList<>();
    // 其它属性
//    private Map<String, String> props = new HashMap<String, String>();


    //唯一编码
    private String code;
    //标题说明
    private String title;
    //处理器类
    private String processorClass;
    // 字段映射器Conf, key统一配置大写
    private Set<String> fieldMapperSet = new HashSet<>();
    // 字段映射器编码
    @JSONField(serialize = false, deserialize = false)
    private Map<String, FieldMapperConf> fieldMapperMap = new HashMap<String, FieldMapperConf>();
    // 输出器Conf
    private List<AnlsOutputterConf> outputterList = new ArrayList<>();
    //调试标识 默认关闭
    private Boolean debugEnable = Boolean.valueOf(false);
    // 其它属性
    private Map<String, Object> props = new HashMap<String, Object>();
}